package object;

/**
 * 测试Object中的常用方法
 */
public class ObjectDemo {
    public static void main(String[] args) {
        Point p = new Point(1,2);
        /*
            Object定义了toString方法，意思是java中任何类都可以转换为字符串
            主要原因:
            1.java中任何类都可以和字符串链接，结果都是字符串，这就要求其他类型需要能转换为字符串
            2.我们经常会将一个对象输出到控制台上, 而控制台只能显示文字, 因此java中任何类都需要能转换为字符串才可以在控制台输出

            Object的toString转换的字符串默认格式为: 类名@地址
         */
        //Point类中没有写toString方法, 但是可以使用, 说明Point类继承了Object类
        String str = p.toString();
        System.out.println(str);

        //以下是会使用到toString方法的常见场景:
        //连接字符串时会默认将p转换为String(依靠p的toString方法)
        String s1 = "这是一个Point对象" + p;
        System.out.println(s1);

        //向控制台输出一个对象, 而输出时也会先将p转换为String后在输出
        System.out.println(p);

        Point p2 = new Point(1,2);
        System.out.println(p==p2);//p和p2地址不同, 因此比较为false
        /*
            Object中的equals默认实现方式还是使用"=="比较, 因此子类如果不重写equls方法, 则该方法没有实际含义
            equals方法设计初衷还是比较两个对象是否相同
         */
        System.out.println(p.equals(p2));
    }
}
